#ifndef __LL_SYNTAX_HPP__
#define __LL_SYNTAX_HPP__

#include "llCommandBase.hpp"
#include "llLex.hpp"

#include <list>
#include <map>
using namespace std;

#include <boost/tr1/memory.hpp>
//using namespace std::tr1;


namespace llmake
{
	class llMakeDirectory;
	typedef std::tr1::shared_ptr<llMakeDirectory> llMakeDirectoryPtr;
/// Syntax engine
	class llSyntaxEngine
	{
// method
	public:
		llSyntaxEngine(llLexList &lexList)
		:m_Lexs(lexList)
		{
		}
		~llSyntaxEngine()
		{
			m_Lexs.clear();
		}
		void setOwner( llMakeDirectoryPtr owner)
		{
			m_Owner = owner;
		}
		void getCommand( llCommandList &commands);
// members
	private:
		llLexList 						m_Lexs;
		llMakeDirectoryPtr				m_Owner;
	};
};

#endif // __LL_SYNTAX_HPP__
